package com.example.lettcode._202411._20241120;

import java.util.Arrays;

/*
485. 最大连续 1 的个数
给定一个二进制数组 nums ， 计算其中最大连续 1 的个数。

示例 1：
输入：nums = [1,1,0,1,1,1]
输出：3
解释：开头的两位和最后的三位都是连续 1 ，所以最大连续 1 的个数是 3.

示例 2:
输入：nums = [1,0,1,1,0,1]
输出：2

提示：
1 <= nums.length <= 105
nums[i] 不是 0 就是 1.
 */
public class _01_zui_da_lian_xu_1_de_ge_shu {

    public static void main(String[] args) {
        int[] nums = {1,0,1,1,1,0,1};
        System.out.println(findMaxConsecutiveOnes2(nums));
    }

    public static int findMaxConsecutiveOnes(int[] nums) {
        int ret = 0;
        int recode = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                recode += 1;
                ret = Math.max(recode, ret);
            } else {
                recode = 0;
            }
        }
        return ret;
    }

    public static int findMaxConsecutiveOnes3(int[] nums) {
        int ret = 0;
        int recode = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                recode += 1;
            } else {
                ret = Math.max(recode, ret);
                recode = 0;
            }
        }
        return Math.max(recode, ret);
    }

    public static int findMaxConsecutiveOnes2(int[] nums) {
        int[] rets = new int[nums.length];
        int record = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0) {
                record += 1;
            }else {
                rets[record] += 1;
            }
        }
        Arrays.sort(rets);
        return rets[rets.length - 1];

    }
}
